// 为Electron的window对象声明类型
declare global {
  interface Window {
    electron?: {
      checkFileExists: (fileName: string) => Promise<boolean>;
      saveFile: (fileName: string, data: Uint8Array) => Promise<boolean>;
      readExcelFile: (fileName: string) => Promise<Uint8Array>;
    };
    process?: {
      type?: string;
    };
  }
}

// 检查是否在Electron环境中运行
export const isElectron = (): boolean => {
  // 使用可选链操作符来安全地访问属性
  return !!(window?.process?.type)
}

// 检查文件是否存在
export const checkFileExists = async (fileName: string): Promise<boolean> => {
  if (!isElectron()) {
    console.warn('不在Electron环境中，无法检查文件')
    return false
  }
  
  try {
    if (!window.electron) {
      throw new Error('Electron API不可用')
    }
    return await window.electron.checkFileExists(fileName)
  } catch (error) {
    console.error('检查文件是否存在失败:', error)
    return false
  }
}

// 保存文件
export const saveFile = async (fileName: string, data: Uint8Array): Promise<boolean> => {
  if (!isElectron()) {
    console.warn('不在Electron环境中，无法保存文件')
    return false
  }
  
  try {
    if (!window.electron) {
      throw new Error('Electron API不可用')
    }
    return await window.electron.saveFile(fileName, data)
  } catch (error) {
    console.error('保存文件失败:', error)
    return false
  }
}

// 读取Excel文件
export const readExcelFile = async (fileName: string): Promise<Uint8Array> => {
  if (!isElectron()) {
    console.warn('不在Electron环境中，无法读取文件')
    throw new Error('不在Electron环境中')
  }
  
  try {
    if (!window.electron) {
      throw new Error('Electron API不可用')
    }
    return await window.electron.readExcelFile(fileName)
  } catch (error) {
    console.error('读取Excel文件失败:', error)
    throw error
  }
}